package com.scau.eco.service;

import com.scau.eco.dto.AdClickTrendDTO;
import com.scau.eco.dto.AreaTop3ProductDTO;
import com.scau.eco.dto.CategoryAllDTO;
import com.scau.eco.entities.*;
import com.scau.eco.dto.CategoryDTO;
import com.scau.eco.dto.PageSplitConvertRateDTO;

import java.util.List;


public interface PageService {

    /**
     * 获取所有的SessionAggrStat信息
     * @return
     */
    List<SessionAggrStat> getAllSessionAggrStat();

    /**
     * 根据任务ID获取某一个SessionAggrStat信息
     * @param taskId 任务ID
     * @return
     */
    SessionAggrStat getSessionAggrStatByTaskId(String taskId);

    /**
     * 获取某个任务的随机行为
     * @param taskId
     * @return
     */
    List<SessionRandomExtract> getRandomExtractByTaskId(String taskId, Integer pageNum, Integer column);

    /**
     * 获取所有随机行为
     * @return
     */
    List<SessionRandomExtract> getAllRandomExtract(Integer pageNum, Integer column);

    /**
     * 获取所有的任务信息
     * @return
     */
    List<Task> getAllTaskInfo(Integer pageNum, Integer column);

    /**
     * 根据任务ID查出具体任务
     * @param taskId
     * @return
     */
    List<Task> getTaskById(String taskId, Integer pageNum, Integer column);

    /**
     * 查询category表特定的行为数据
     * @param type 1代表查询click数据，2代表查询order数据，3代表查询pay数据
     * @return
     */
    List<CategoryDTO> getTopTenCategory(Integer type);

    /**
     * 根据taskId查询session表特定的行为数据
     * @param categoryid
     * @return
     */
    List<Top10Session> getTopTenSessionByTaskId(Long categoryid, Integer pageNum, Integer column);

    /**
     * 分页获取前十session信息
     * @param pageNum
     * @param column
     * @return
     */
    List<Top10Session> getAllTopTenSession(Integer pageNum, Integer column);

    /**
     * 获取所有的页面分割转换率
     * @return
     */
    List<PageSplitConvertRateDTO> getPageSplitConvertRate();

    AreaTop3ProductDTO getAreaTop3ProductData(String area);

    List<BlackUser> getBlackUserData(Integer pageNum, Integer column);

    List<ProvinceTop3Ad> getProvinceTop3AdData(String province,Integer pageNum, Integer column);

    /**
     * 最近一小时广告点击量实时统计
     * @return
     */
    List<AdClickTrend> getAdClickTrend();
    /**
     * 根据adid统计最近一小时广告点击量实时统计
     * @return
     */
    AdClickTrendDTO getAdClickTrendByGroup();

    /**
     * get adstat
     */
    List<AdStat> getAdStatData(String province, String city);

    List<CategoryAllDTO> getAllTopTenCategory();
}
